/**
 * Definition for a binary tree node.
 * struct TreeNode {
 *     int val;
 *     struct TreeNode *left;
 *     struct TreeNode *right;
 * };
 */
// 给定一棵二叉搜索树，请找出其中第k大的节点。

// 二叉搜索树的中序遍历（left - root -right）为升序，中序遍历顺序颠倒一下则为降序


// 反着的中序遍历为降序
void find_k(struct TreeNode *root, int k, int *idx, int *res) {
    if (root == NULL) return ;
    find_k(root->right, k, idx, res);
    if (++(*idx) == k) {
        *res = root->val;
        return ;
    }
    find_k(root->left, k, idx, res);
}
int kthLargest(struct TreeNode* root, int k){
    int idx = 0, res = -1;
    find_k(root, k, &idx, &res);
    return res;
}